﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using LeadThing.AbpZeroTemplate.LawsRegulationses.Dtos;
using LeadThing.AbpZeroTemplate.Dto;

namespace LeadThing.AbpZeroTemplate.LawsRegulationses
{
    /// <summary>
    /// 法律法规表服务接口
    /// </summary>
    public interface ILawsRegulationsAppService : IApplicationService
    {
        #region 扩展方法

        /// <summary>
        /// 获取全部法律法规数据加载页面数据
        /// </summary>
        /// <returns></returns>
        List<LawsRegulationsLoadPageDto> GetAllLawsRegulationsLoadPage(GetLawsRegulationsInput input);

        #endregion

        #region 法律法规表管理

        /// <summary>
        /// 根据查询条件获取法律法规表分页列表
        /// </summary>
        Task<PagedResultDto<LawsRegulationsListDto>> GetPagedLawsRegulationssAsync(GetLawsRegulationsInput input);

        /// <summary>
        /// 通过Id获取法律法规表信息进行编辑或修改 
        /// </summary>
        Task<GetLawsRegulationsForEditOutput> GetLawsRegulationsForEditAsync(NullableIdDto<long> input);

        /// <summary>
        /// 通过指定id获取法律法规表ListDto信息
        /// </summary>
        Task<LawsRegulationsListDto> GetLawsRegulationsByIdAsync(EntityDto<long> input);



        /// <summary>
        /// 新增或更改法律法规表
        /// </summary>
        Task CreateOrUpdateLawsRegulationsAsync(CreateOrUpdateLawsRegulationsInput input);





        /// <summary>
        /// 新增法律法规表
        /// </summary>
        Task<LawsRegulationsEditDto> CreateLawsRegulationsAsync(LawsRegulationsEditDto input);

        /// <summary>
        /// 更新法律法规表
        /// </summary>
        Task UpdateLawsRegulationsAsync(LawsRegulationsEditDto input);

        /// <summary>
        /// 删除法律法规表
        /// </summary>
        Task DeleteLawsRegulationsAsync(EntityDto<long> input);

        /// <summary>
        /// 批量删除法律法规表
        /// </summary>
        Task BatchDeleteLawsRegulationsAsync(List<long> input);

        #endregion

        #region Excel导出功能



        /// <summary>
        /// 获取法律法规表信息转换为Excel
        /// </summary>
        /// <returns></returns>
        Task<FileDto> GetLawsRegulationsToExcel();

        #endregion

        #region APP接口

        /// <summary>
        /// 根据查询条件获取法律法规表分页列表
        /// </summary>
        Task<PagedResultDto<LawsRegulationsAPPListDto>> GetPagedLawsRegulationssAPPAsync(GetLawsRegulationsAPPInput input);

        /// <summary>
        /// 通过Id获取法律法规表信息进行编辑或修改 
        /// </summary>
        Task<LawsRegulationsAPPEditDto> GetLawsRegulationsForEditAPPAsync(EntityDto<string> input);

        #endregion
    }
}
